当实体映射为一个对象时,使用Hibernate获取java热对象列表
我有一个类User
,它包含Contacts
的列表
用户类别:
@Entity
@Table(name = "profile")
public class User implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@Column(unique = true)
private String login;
@OneToMany(mappedBy = "owner", cascade = CascadeType.ALL)
private List<Contact> contacts;
...
...
}
联络类别:
@Entity
@Table
public class Contact implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
@ManyToOne
@JoinColumn(name = "user_profile_id")
private User owner;
...
...
}
如何按用户获取联系人列表。id字段
# 1 楼答案
我不确定我得到了你想要的
只需通过Id查找用户,你就会得到他/她的联系人。但是,集合将被延迟加载,当您调用
getContacts()
或Hibernate.initialize(user.getContacts())
时,列表将真正被加载。在@OneToMany中将FetchMode更改为“渴望”,以防您不希望延迟加载例如,使用HQL查询:
或标准:
# 2 楼答案
Contact
有一个与User
相关联的外键列,因此不需要使用join请不要使用
int id
这样的基元类型,而是使用Integer id